﻿<%@ Page Language="C#" AutoEventWireup="true" CodeFile="r_desenvolvimento_por_solucao_e_tipo.aspx.cs" Inherits="relatorios_r_desenvolvimento_por_solucao_e_tipo" %>

<%
    /*
    string Permissao_RelatoriosFinanceirosComercial = "" + this.Session["Permissao_RelatoriosFinanceirosComercial"];
    if (Permissao_RelatoriosFinanceirosComercial != "1")
    {
        this.Response.Redirect("../login.aspx");
    }  */  
%>

<%
    // Query
    /*
        SELECT        COUNT(*) AS TOTAL, Descricao AS SOLUÇÃO, Tipo AS TIPO,
                                     (SELECT        Situacao
                                       FROM            situacoes
                                       WHERE        (Codigo = t.Status)) AS SITUAÇÃO
        FROM            testesfull AS t
        WHERE        (Codigo > 0) AND (Excluido = 0) AND (Descricao <> '<< Nenhum >>') AND (Data > '01/10/2014')
        GROUP BY Descricao, Tipo, Status
        ORDER BY TIPO, SITUACAO, SOLUÇÃO    
    */
%>

<div style="background-color: White; min-height:840px;">
    <%
        int pendente = 0;
        int testado = 0;
        int enviado = 0;
        int finalizado = 0;
        int negado = 0;
        int realizado = 0;                    
        
        bool hasResults = false;
        DateTime now = DateTime.Now;
        string month = this.Request["month"];
        string year = this.Request["year"];            
        int iMonth = -1;
        int iYear = -1;            
        int maxDay = 31;
            
        // Month
        if (string.IsNullOrEmpty(month) == true)
        {
            iMonth = now.Month;
        }
        else
        {
            try
            {
                iMonth = int.Parse(month);
            }
            catch { iMonth = now.Month; }
        }
        // Year            
        if (string.IsNullOrEmpty(year) == true)
        {
            iYear = now.Year;
        }
        else
        {
            try
            {
                iYear = int.Parse(year);
            }
            catch { iYear = now.Year; }
        }

        maxDay = DateTime.DaysInMonth(iYear, iMonth);
    %>
    <center>
        <form>
            <table>
                <tr>
                    <td>Mês</td>
                    <td>Ano</td>
                    <td>Status</td>
                    <td></td>
                </tr>

                <tr>
                    <td>
                        <input type="text" id="month" name="month" value="<%= iMonth %>" />
                    </td>
                    <td>
                        <input type="text" id="year" name="year" value="<%= iYear %>" />
                    </td>
                    <td>
                        <select name="status">
                            <option value="">Todos</option>
                            <option value="Autorizado" <%= this.Request["status"] == "Autorizado" ? "selected=selected" : ""%>>Autorizado</option>
                            <option value="Pendente" <%= this.Request["status"] == "Pendente" ? "selected=selected" : ""%>>Pendente</option>
                            <option value="Testado" <%= this.Request["status"] == "Testado" ? "selected=selected" : ""%>>Testado</option>
                            <option value="Enviado" <%= this.Request["status"] == "Enviado" ? "selected=selected" : ""%>>Enviado</option>
                            <option value="Finalizado" <%= this.Request["status"] == "Finalizado" ? "selected=selected" : ""%>>Finalizado</option>
                            <option value="Negado" <%= this.Request["status"] == "Negado" ? "selected=selected" : ""%>>Negado</option>
                            <option value="Realizado" <%= this.Request["status"] == "Realizado" ? "selected=selected" : ""%>>Realizado</option>
                        </select>
                    </td>
                    <td>
                        <input type="submit" value="ok" />
                    </td>
                </tr>
            </table>
        </form>
    </center>
        
        
        <br />

        <span>

            <%
                hasResults = false;
                PL.DataBase.DAO.Instance.Setup(PL.DataBase.DatabaseTypes.SqlServer, PL.General.Instance.ForumConnectionString);
                PL.DataBase.DAO.Instance.Connector.Open();
    
                string message = "";
                try
                {       
                    DateTime targetDate = new DateTime(iYear, iMonth, 1);   
                    DateTime maxDate = new DateTime(iYear, iMonth, maxDay);

                    string status = "" + this.Request["status"];
                    string sql = "";
                    sql += " SELECT        COUNT(*) AS TOTAL, Descricao AS SOLUÇÃO, Tipo AS TIPO, ";
                    sql += "                                 (SELECT        Situacao ";
                    sql += "                                 FROM            situacoes ";
                    sql += "                                 WHERE        (Codigo = t.Status) ";
                    if (string.IsNullOrEmpty(status) == false)
                    {
                        sql += "                                AND (Situacao = '" + status + "') ";
                    }                    
                    sql += "                                 ) AS SITUAÇÃO ";
                    sql += " FROM            testesfull AS t ";
                    sql += " WHERE        (Codigo > 0) AND (Excluido = 0) AND (Descricao <> '<< Nenhum >>') AND "; 
                    sql += " Data  >= '" + targetDate.Day + "/" + targetDate.Month + "/" + targetDate.Year + "' "; 
                    sql += " AND Data <= '" + maxDate.Day + "/" + maxDate.Month + "/" + maxDate.Year + "' ";
                    
                    sql += " GROUP BY Descricao, Tipo, Status ";
                    sql += " ORDER BY SOLUÇÃO, TIPO, SITUACAO ";
                    var reader = PL.DataBase.DAO.Instance.Connector.QueryWithReader(sql);
                    while (reader.Read() == true)
                    {
                        string situation = ("" + reader["SITUAÇÃO"]).ToLower();

                        if (string.IsNullOrEmpty(situation) == true)
                        {
                            continue;
                        } 
                        string solution = "" + reader["SOLUÇÃO"];
                        string total = "" + reader["TOTAL"];
                        string color = this.GetSituationColor("" + reader["SITUAÇÃO"]);
                        if (string.IsNullOrEmpty(solution) == false)
                        {
                            if (situation == "pendente") { pendente++; }
                            if (situation == "testado") { testado++; }
                            if (situation == "enviado") { enviado++; }
                            if (situation == "finalizado") { finalizado++; }
                            if (situation == "negado") { negado++; }
                            if (situation == "realizado") { realizado++; }                                  
                                                        
                            hasResults = true;     
            %>
                            O <strong><%= solution %>: </strong> possui <%= total %> <%= reader["TIPO"] %> com o status de <span style="<%= color %>"><%= reader["SITUAÇÃO"] %></span>                                                    
                            <br />
            <%                                                           
                        }
                    }
                    reader.Close();
                }
                catch (Exception e)
                {
                    message = e.Message;
                }
                PL.DataBase.DAO.Instance.Connector.Close();
                if (hasResults == false)
                {
            %>
                    sem resultados  
            <%
                }
            %>        
    </span>    
</div>
